package `02-lambada`

/**
 * 函数参数是函数，lambda的历史版本
 */
fun main() {
    /**
     * 函数只有一个是参数是lambda实现的函数
     */
    show(1,{
        println("输入的数据是$it")
    })

    //传参时加入参数名
    show(1, lambda = {
        println("输入的数据是$it")
    })

    //参数放到()后
    show(1){
        println("输入的数据是$it")
    }

    /**
     * 函数的参数有多个是lambda实现的函数
     */
    show02(1,{
           "数值=$it"
    },{
        println(it)
    })

    //参数按顺序传入，带参数名
    show02(value = 1, lambda = {
        "数值=$it"
    }, lambda02 = {
        println(it)
    })

    //参数不按顺序，带参数名
    show02(value = 1,  lambda02 = {
        println(it)
    },lambda = {
        "数值=$it"
    },)
}

fun show(value:Int,lambda:(Int)->Unit):Unit{
    lambda.invoke(value)
}

fun show02(value:Int,lambda:(Int)->String,lambda02:(String)->Unit):Unit{
    var str:String = lambda.invoke(value)
    lambda02.invoke(str)
}